package com.company.eos.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.company.eos.controller.form.user.LoginForm;
import com.company.eos.controller.form.user.UpdatePasswordDTO;
import com.company.eos.controller.form.user.UpdateProfileDTO;
import com.company.eos.domain.LoginAuthor;
import com.company.eos.domain.User;

/**
 * @author Xmirror
 * @description 针对表【sys_login_author(登录授权)】的数据库操作Service
 * @createDate 2022-03-18 15:39:37
 */
public interface LoginAuthorService extends IService<LoginAuthor> {

    /**
     * 用户登录
     *
     * @param form 用户登录DTO对象
     * @return User实体对象
     */
    User login(LoginForm form);

    /**
     * 根据登录信息得知登录授权信息
     *
     * @param loginAccount 登录账号
     * @return 登录授权表
     */
    LoginAuthor getByAccount(String loginAccount);

    /**
     * 根据登录账号获取用户
     *
     * @param loginAccount 登录账号
     * @return User
     */
    User getUserByAccount(String loginAccount);

    /**
     * 更新密码
     *
     * @param dto 用户更新密码DTO对象
     * @return 更新的行数，默认为 1
     */
    Integer updatePassword(UpdatePasswordDTO dto);

    /**
     * 用户更新手机号和邮箱，需要修改用户表和登录权限表
     *
     * @param dto dto对象
     * @return 修改的行数
     */
    Integer updateProfile(UpdateProfileDTO dto);

    /**
     * 插入新的登录账号
     *
     * @param account 登录账号
     * @param userId  用户ID
     * @return 返回值
     */
    Integer insertLoginAccount(String account, Integer userId);

    /**
     * 生成所有登录账号
     *
     * @return 生成的数量
     */
    Integer generatorLoginAccount();

    /**
     * 根据用户插入登录账号
     *
     * @param user 用户
     * @return 插入数量
     */
    Integer insertLoginAccountByUser(User user);

    /**
     * 根据用户ID删除登录账户
     *
     * @param userId
     * @return
     */
    Integer deleteLoginAccountByUserId(int userId);
}
